package com.example.onlinetaxi.util.ChartInitUtil;

import android.graphics.Color;

import com.example.onlinetaxi.LocalStroage.LocalStorage;
import com.example.onlinetaxi.util.ColorUtil;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import lecho.lib.hellocharts.listener.PieChartOnValueSelectListener;
import lecho.lib.hellocharts.model.PieChartData;
import lecho.lib.hellocharts.model.SliceValue;
import lecho.lib.hellocharts.view.PieChartView;

public class PieChartInitUtil {

    // 转换为PieChartView可以录入的集合对象
    private List<SliceValue> values = new ArrayList<>();

    // 折线图数据对象
    private PieChartData mData;
    // 上车总数
    private Integer count;
    private String title;
    // 格式化工具
    private DecimalFormat df = new DecimalFormat("#.0");

    public void initChart(PieChartView mPieChartView, String title, List<String> key, List<Double> value, int count) {
        this.title = title;
        this.count = count;

        for (int i = 0; i < key.size(); i++) {
            //设置每一块的大小和颜色
            SliceValue sliceValue = new SliceValue(value.get(i).floatValue(), ColorUtil.colors.get(i));
            sliceValue.setLabel(key.get(i));
            values.add(sliceValue);
        }

        //设置相关属性饼状图的数据类
        mData = new PieChartData(values); //饼状图的数据类
        mData.setHasLabels(true); //是否有标签，默认在内部
        mData.setHasLabelsOnlyForSelected(false); //是否设置选中时是否有标签
        mData.setHasLabelsOutside(false); //是否设置标签在外部
        mData.setHasCenterCircle(true); // 是否有中心圆环
        mData.setCenterCircleScale(0.8f);//设置中心环的大小
        mData.setSlicesSpacing(4);  //设置分离间距--
        mData.setValueLabelTextSize(8);
        //设置中心文本，必须有中心圆环时设置
        mData.setCenterText1(title);//设置单行文本
        mData.setCenterText1Color(Color.DKGRAY);
        mData.setCenterText1FontSize(16);

        //设置控件相关
        mPieChartView.setPieChartData(mData);    //设置数据
        mPieChartView.setValueSelectionEnabled(true);   //设置是否能选中
        mPieChartView.startDataAnimation();         //设置动画
        mPieChartView.setCircleFillRatio(0.9f);//设置饼状图占整个view的比例
        mPieChartView.setViewportCalculationEnabled(true);//设置饼图自动适应大小
        mPieChartView.setChartRotationEnabled(false);//设置饼图是否可以手动旋转

        //在这里设置监听
        mPieChartView.setOnValueTouchListener(new ValueTouchListener());
    }

    //点击事件监听
    public class ValueTouchListener implements PieChartOnValueSelectListener {

        @Override //如果设置为能选中，选中时走此方法，如果设置为不能选中，点击时走此方法
        public void onValueSelected(int i, SliceValue value) {
            if (LocalStorage.type.equals("passenger")) {
                // 设置双行文本
                mData.setCenterText1("您近7天在该地点上车" + Float.valueOf(value.getValue()).intValue() + "次");
                mData.setCenterText1FontSize(18);
                float result = (value.getValue() / count) * 100.0f;
                mData.setCenterText2("占比" + df.format(result) + "%");
                mData.setCenterText2FontSize(12);
                mData.setCenterText2Color(Color.LTGRAY);
            } else if (LocalStorage.type.equals("driver")) {
                // 设置双行文本
                mData.setCenterText1("您近7天接收该类型订单" + Float.valueOf(value.getValue()).intValue() + "次");
                mData.setCenterText1FontSize(18);
                float result = (value.getValue() / count) * 100.0f;
                mData.setCenterText2("占比" + df.format(result) + "%");
                mData.setCenterText2FontSize(12);
                mData.setCenterText2Color(Color.LTGRAY);
            }
        }

        @Override //能选中，取消选中时调用；  不能选中： 不走此方法
        public void onValueDeselected() {
            // 设置双行文本
            //设置中心文本，必须有中心圆环时设置
            mData.setCenterText1(title);//设置单行文本
            mData.setCenterText1FontSize(16);
            mData.setCenterText2("");
        }
    }
}
